<?php

App::uses('AppController', 'Controller');

class ProcedimentosController extends AppController {
	
	public function alterar($id = null){
		
		$this->set('title_for_layout', 'Procedimentos :: Alterar');		
		
		if ($this->request->data){
			if ($this->Procedimento->save($this->request->data)){
				$this->Session->setFlash('Dados atualizados com sucesso.', 'default', array('class' => 'flashOk'));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash('Erro ao tentar atualizar.', 'default', array('class' => 'flashError'));
			}
		}else{
			$this->Procedimento->id = $id;
			$this->request->data = $this->Procedimento->read();
		}
		
		$this->set('tipoprocedimentos',$this->Procedimento->TipoProcedimento->find('list', array('order' => 'nome')));
		$this->set('cbos',$this->Procedimento->Cbo->find('list', array('order' => 'nome')));
				
	}
	
	public function excluir($id = null){
		
		try {
			$this->{$this->modelClass}->delete($id);
			$this->Session->setFlash('Registro excluído com sucesso!', 'default', array('class' => 'flashOk'));
		} catch (Exception $e) {
			$this->Session->setFlash('Não é possível excluir porque existem referências no sistema!', 'default', array('class' => 'flashError'));
		}
		
		$this->redirect($this->referer());

	}
	
	public function busca_preco($procedimento_id = null, $convenio_id = null, $medico_id = null) {

		$this->autoRender = false;
		
		if (!$procedimento_id || !$convenio_id) {
			return json_encode(array('sucesso' => false));
		}
		
		if ($medico_id) {
			$paga_na_hora = $this->Procedimento->Agenda->Medico->MedicoConvenio->get_paga_na_hora($medico_id, $convenio_id);
			$preco = $this->Procedimento->Agenda->Medico->get_preco_procedimento($medico_id, $convenio_id, $procedimento_id);
			$obs_procedimento = $this->Procedimento->Agenda->Medico->get_observacoes_procedimento($medico_id, $convenio_id, $procedimento_id);
		} else {
			$paga_na_hora = 'N';
			$preco = $this->Procedimento->Agenda->Convenio->ConvenioProcedimento->get_valor($convenio_id, $procedimento_id);
			$obs_procedimento = $this->Procedimento->Agenda->Convenio->get_observacao_procedimento($convenio_id, $procedimento_id);
		}
		
		return json_encode(
			array(
				'sucesso' => true,
				'paga_na_hora' => $paga_na_hora,
				'preco' => $preco,
				'obs_procedimento' => $obs_procedimento
			)
		);
		
	}
	
	public function get_procedimentos_list($tipo_procedimento_id = null, $formato = 'html') {
		
		$this->autoRender = false;
		
		$options['order'] = 'nome';
		
		if ($tipo_procedimento_id) {
			$options['conditions']['tipo_procedimento_id'] = $tipo_procedimento_id;
		}
		
		$results = $this->{$this->modelClass}->find('list', $options);
		
		$retorno = null;
		
		foreach ($results as $id => $nome) {
			if ($formato == 'html') {
				$retorno .= "<option value='{$id}'>{$nome}</option>";
			} else {
				$retorno[$id] = $nome;
			}
		}
		
		if ($formato == 'html') {
			$retorno = "<option value='0' selected='selected'>Selecione...</option>" . $retorno;
		}		
		
		return $retorno;		
		
	} 

	public function grid() {

		$this->autoRender = false;

		if ($this->request->data['query'] != '')
			$conditions = array($this->request->data['qtype'] . ' LIKE' => '%' . str_replace(' ', '%', $this->request->data['query']) . '%');
		else
			$conditions = array();

		$this->paginate = array(
            'page' => $this->request->data['page'],
            'limit' => $this->request->data['rp'],
            'order' => array($this->request->data['sortname'] => $this->request->data['sortorder']),
            'conditions' => $conditions,
			'maxLimit' => 1000,
			'recursive' => 0
		);

		$results = $this->paginate($this->modelClass);

		$data = array();
		$data['page'] = $this->request->data['page'];
		$data['total'] = $this->{$this->modelClass}->find('count', array('conditions' => $conditions));
		$data['rows'] = array();

		foreach($results as $rs) {
			$data['rows'][] = array(
		        'id' => $rs[$this->modelClass]['id'],
		        'cell' => array(
					$rs[$this->modelClass]['id'],
					$rs[$this->modelClass]['nome'],
					$rs['TipoProcedimento']['nome'],
					$rs['Cbo']['nome']
					
				)
			);
		}

		return json_encode($data);
	}
	

	public function incluir(){
		
		if ($this->request->data){
			
			$this->set('title_for_layout', 'Salas :: Incluir');
			
			if ($this->Procedimento->save($this->request->data)){
				
				$this->Session->setFlash('Dados incluídos com sucesso.', 'default', array('class' => 'flashOk'));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash('Erro ao tentar incluir.', 'default', array('class' => 'flashError'));
			}
		}

		$this->set('tipoprocedimentos',$this->Procedimento->TipoProcedimento->find('list', array('order' => 'nome')));
		$this->set('cbos',$this->Procedimento->Cbo->find('list', array('order' => 'nome')));
	}
	
	public function index() {
		
		$this->set('title_for_layout', 'Procedimentos');
		
	}
	
	
}
